\chapter{Conclusion}
The main objective of this project was to investigate whether CoreCalc could be extended to use the GPU for parallelizing evaluation of functions. This has indeed been proven possible and we have implemented an experimental prototype that allows a subset of the CoreCalc operations to be evaluated on the GPU.

We have investigated methods for parallelizing spreadsheet applications using the GPU and based on our analysis we have chosen to focus on sheet defined functions and usage of these in higher order functions such as \keyword{tabulate}. Our prototype shows that it is possible to achieve a performance gain on spreadsheet operations, given enough data and enough arithmetic complexity. However, except for sheet defined functions, only very few built-in spreadsheet operations use enough data or have the required complexity. Only matrix operations such as the built-in matrix multiplication function have displayed potential for performance gains on the GPU.

We have analysed Microsoft Accelerator and documented its limitations related to the purpose of this prototype. In order to construct Microsoft Accelerator Expression Graphs at evaluation time we have designed a simple intermediate abstract syntax based on the Expr abstract syntax from CoreCalc. 

If using complex simulations or extremely large data amounts, such as in Monte Carlo simulations, it is indeed possible to optimise the spreadsheet calculation using the GPU. However, there is no or very limited performance gain when using the GPU to evaluate light spreadsheets on current hardware. Taking this into account it is questionable if this should be implemented in mainstream software. However, the future development of GPUs looks promising. 